package com.hzit;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 类名：
 * 作者：WF
 * 功能：
 */
public class MyGenerator {


	public static void main(String[] args) {
		//1. 定义数据源配置
		String url = "jdbc:mysql://localhost:3306/java20220620?useSSL=false&serverTimezone=Asia/Shanghai";
		String username = "root";
		String password = "1234";
		//2. 配置数据源的构造器对象
		DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig.Builder(url,username,password);
		//3. 配置自动生成
		FastAutoGenerator.create(DATA_SOURCE_CONFIG)
				// 全局配置
				.globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称？"))
						.outputDir("d:\\mp")     // 指定输出目录
						.fileOverride())
				// 包配置
				.packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名？")))
				// 策略配置
				.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名，多个英文逗号分隔？所有输入 all")))
						.controllerBuilder().enableRestStyle().enableHyphenStyle()
						.entityBuilder().enableLombok().addTableFills(
								new Column("create_time", FieldFill.INSERT)
						).build())
				.templateEngine(new FreemarkerTemplateEngine())
				.execute();

	}
	// 处理 all 情况
	protected static List<String> getTables(String tables) {
		return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
	}

}
